perm filename UUO.UPD[S,DOC]3 blob
sn#134546 filedate 1974-12-08 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00009 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00003 00002 This file contains corrections, additions and updates to the UUO Manual,
C00015 00003 25. THE NEW AD & DA CONVERTERS (JAM)
C00032 00004 26. The CORE2 UUO will take the direct (error) return if you ask it
C00040 00005 38. PDP-11 INTERFACE (19-MAY-74 -- BO)
C00047 00006 39. File protection for disk files: the "same programmer, other
C00060 00007 51. Interrupts will NOT terminate a SLEEP UUO prematurely. The
C00063 00008 58. Date75 11/11/74 updated 11/22/74
C00068 00009 59. XGP default margin settings
C00072 ENDMK
C⊗;
This file contains corrections, additions and updates to the UUO Manual,
including new UUOs that have been added since the manual went to press.
1. The only UUO spacewar processes on the PDP-6 can issue is the
DISMIS UUO. (I think any UUO given on the 6 has the effect of DISMIS.)
2. On p. 126, the 2nd line of 1st paragraph should read "even" instead
of "ever".
3. In disk file protection key, read protection (2 bit) implies
protection protection (4 bit) for any group of users.
4. INTJEN UUO turns on bits in the interrupt mask, not in the interrupt
enablings.
5. Non-ARPA PTYs never run LOGOUT when logging out. ARPA PTYs do run
LOGOUT.
6. RENAME can be done after ENTER without doing a CLOSE first unless
the file being renamed is replacing an existing file (another file
had same name when ENTER was done). In that case a CLOSE must be
done first (which will delete the original file).
7. IOPUSH CHN,ID ;[OP=724]
<pdlov>
<channel pushed>
Pushes io channel CHN on io pdl. Channel CHN may now be used
without affecting the device you pushed. The ID is saved with
the channel for use with IOPOP and IOPDL.
8. IOPOP CHN,ID ;[OP=725]
<stack empty>
<success>
Finds first channel on stack with ID searching down from top. If
ID = 0 then uses top of stack. If not found, takes error return.
Releases channel CHN, places the device from the stack into that
channel, and compresses that entry out of the stack.
9. IOPDL N,ID ;[OP=726]
IOPDL 0,
Does IOPOP for each device on the io pdl. The channel it
uses is the same one the device was pushed from.
IOPDL 1,
Releases all devices from stack without affecting devices
not currently pushed on stack.
IOPDL 2,ID
<error return>
<device released>
Finds device with ID same as for IOPOP, then releases it
without affecting any other devices. The stack is compressed.
10. MOVE AC,[CODE,,JOB #]
GETPRV AC, ;[OP=047, ADR=400115] CALLI 400115
<always return here>
If job # illegal, uses current job.
CODE = 0
Get active privileges for job #. Return them in AC.
CODE = 1
Get passive privileges for job #. Return them in AC.
CODE = 2
Get temporary privileges for job #. Return them in AC.
11. TTYSKP CHN, ;[OP=047, ADR=400116] CALLI 400116
If no device on channel CHN, "IO TO UNASSIGNED CHANNEL" error.
If not TTY, never skip.
If TTY, will skip if next input will not hang.
12. MOVEI AC,ADDR
DIAL AC, ;[OP=047, ADR=400117] CALLI 400117
<error return, error code in AC>
<success return>
ADDR: DIALER #,,FUNCTION CODE
<any further args as needed>
Error codes:
0 Illegal dialer #.
1 Dialer in use by someone else.
2 Don't meet ownership requirements (currently, don't have TTY11
inited)
3 Attempt to dial while call in progress (should hang up first)
4 Dialing failure.
Function codes:
0 Claim dialer. Must be done before any other function can be
performed with this dialer #.
1 Get dialer status. Returns in AC:
<last interrupt coni>,,<current coni>
2 Dial a number. ADDR+1 is area code in the following format:
Bit 0 17 18 21 22 25 26 29 30 35
__________________________________________
| | | | | |
Digit | | 1 | 2 | 3 | |
|______________|_____|_____|_____|_______|
ADDR+2 is the rest of the number in this format:
Bit 0 5 6 7 8 11 12 15 16 19 20 23 24 27 28 31 32 35
_____________________________________________________
| | | | | | | | | | |
Digit | |A|V| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|_____|_|_|_____|_____|_____|_____|_____|_____|_____|
A on, dial area code.
V on, call is "VOICE" call. Will switch to AD/DA when call
completed. Not implemented yet!
3 Hang up.
4 Release dialer (automatically done if you release TTY11).
13. LOOKUP followed by ENTER now updates date/time in UFD entry for file.
14. RUNMSK is now a no-op (may become illegal soon).
15. WHO AC, ;[OP=047, ADR=400112] CALLI 400112
AC right should contain address of 22-word block for returned asciz
string.
If AC left contains legal job #, return who line for that job as
asciz text.
If AC left = 0 or > legal job #, return who line for current job.
If AC left < 0, return system who line.
If no job for legal job #, returns null string.
16. TTYJOB AC, ;[OP=047, ADR=400113] CALLI 400113
If AC is 0 to max TTY line number, returns in AC the job # of owner.
Sign bit will be on if this is not owners "console".
If AC is -<PTY line #>, returns in AC the job # of job controlling PTY.
All other args return 0 in AC.
17. PTYs are initialized with bits 6 (PTYLIN), 10 (PTYUSE), 13 (FCS)
and 16 (XON) (4222,,0 bits) on in the line characteristics. The UUO
manual (p. 48) does not mention the FCS bit being on for a new PTY.
18. In the UUO manual on the first line of p. 148 (section 13.3), it
should say "(bit 28)" instead of "(bit 31)" (bit to set to get error
return instead of error message when LPT is hung).
19. IMP MTAPE 13 (Bless Host) is now a no-op since there is no longer
a system table of dead hosts. All hosts are assumed alive except for
an instant after the IMP network has returned a Host Dead message in
response to an attempt by us to send that host a message.
20. PPACT does erase all deactivated pieces of paper even on
Data Discs. See also note number 56 in this file.
21. When doing 8-bit byte buffered IMP output, any of the four bytes
in the last used word in any buffer can be suppressed from being
transmitted to the IMP by setting the corresponding bit of the low
order four bits of the same word. For example, if the word pointed
to by the byte pointer in your output buffer header contains
776655,,443307, then only the first (high-order) byte of this word
will be transmitted. That is,
bit 32 (0,,10 bit) suppresses the first byte (776000,,0 byte),
bit 33 (0,,4 bit) suppresses the second byte (001774,,0 byte),
bit 34 (0,,2 bit) suppresses the third byte (3,,770000 byte),
bit 35 (0,,1 bit) suppresses the fourth byte (0,,007760 byte).
22. The DEVNUM UUO is listed four times in the manual as CALLI 4000104
whereas it should really be CALLI 400104 (deleting extra zero).
23. The left half of each entry in the JOBJDA block of the job data
area contains the channel-status bits, as returned (in the right half
of an AC) by the CHNSTS UUO. However, these bits and the device data
block (DDB) address in the right half are not kept up to date by the
system. These cells are guaranteed correct only when your job is not
running; they will in general also be correct if you have not done
any I/O since the beginning of the current quantum of run time.
24. The left half of a TTY's entry in TTYTAB (see monitor pointers)
contains the number of the next TTY in the given TTY's talk ring, if
that TTY is in a talk ring; when a TTY is not in a talk ring, the
left half of its TTYTAB entry contains the TTY's own line number.
25. THE NEW AD & DA CONVERTERS (JAM)
The new analog-to-digital converter (ADC) and digital-to-analog
converter (DAC) are devices on the PDP-6's IO bus which may be
operated in dump mode (17) only. They provide input and output of
digitized waveforms conventionally representing speech, music, or
other acoustical signals.
Both the DAC and the ADC can operate in a manner such that the data
transfer UUO (INPUT, or IN, for ADC, OUTPUT, or OUT, for DAC) does
not wait for the transfer to finish before returning to the user.
This feature is enabled by the 100 bit (called CONT) in the IO status
word. In this case, the user must have three separate buffers. There
is the buffer that the device is operating on, the one that is
waiting, and the one the user is operating on. If you use just two
buffers, you may find that you are operating on the same buffer the
system is operating on. As you give data transfer UUOs, the first one
will start the transfer and return immediately. The second one will
store the IOWD and return immediately. It is not until the third one
is given that the UUO will wait. It will wait for the buffer
specified by the first UUO to become free, and start the second
buffer, before it will accept the address of the third buffer and
return.
If either the ADC or the DAC loses a sample, the LOST bit (bit 2000)
is set in the IO status word. This means a discontinuity has occured
in the signal.
The ADC can be data-triggered. By setting the CYCLE bit (bit 200) in
the IO status word, the ADC does not move beyond the first buffer,
but instead transfers continuously into the first buffer. When it
gets to the end of the first buffer, it goes back to the beginning
automatically. This process continues until a sample comes in that is
larger than some threshold (user settable). When such a sample
occurs, the system goes on to the second buffer and returns to the
user the position in the first buffer that the triggering sample
occurred. For effeciency, the compare is not made with each sample in
the word, but instead with just the high-order sample. You must be in
CONT mode to guarantee continuity between the first and second
buffers.
When the ADC in CYCLE mode goes to the second buffer, the CYCDON bit
(20 bit) is set in the IO status word. You can cause the ADC to start
cycling again by clearing this bit. This is only useful if you know
which buffer it is in. It will go into CYCLE mode on the next buffer.
The ADC and the DAC can be made to start simultaneously. This is done
by turning on the IOSYNC bit (40 bit) in the IO status words of both
devices (they are different devices, require different INITs). What
happens is that the first data transfer UUO (of either device) does
not actually start the transfer. When the first data transfer UUO for
the other device is given, then both devices will begin. Note that
either UUO (ADC or DAC) can be given first. The second UUO will start
the transfer. You must be in CONT mode for the device whose UUO is
given first, or you will not return from the UUO. The system will
only wait one minute between the two UUOs.
If you are in CYCLE mode on the ADC, and in IOSYNC mode on both
devices, you can specify that the DAC is to be started after the ADC
is advanced to the second buffer and not just at the beginning of
input. This is done by setting the IOAFT bit (bit 4000) in the ADC IO
status word. This will prevent the DAC's being started until the ADC
advances to the second buffer.
The device-specific bits of the IO status word are shown below. The
asterik represents bits that are only meaningful to the ADC.
Bits Octal Mnemonic Meaning
*24 4000 IOAFT Begin DAC only after ADC has
moved on to second buffer, i.e.
IOSYNC∧IOAFT∧CYCDON ⊃ Start DAC
25 2000 LOST Data missed
*28 200 CYCLE Causes ADC to transfer repeatedly
into the first buffer until
some input sample exceeds a
preset threshold.
29 100 CONT Causes system to return to the
user immediately from a data
transfer UUO.
30 40 IOSYNC ADC and DAC will be started
simultaneously.
*31 20 CYCDON Indicates ADC has moved from
first input buffer to the
second. Only relevant in
CYCLE mode.
To set parameters like sampling rate, channel multiplexing, and such,
the MTAPE UUO has been drafted to serve this special function. An
MTAPE to either the ADC or the DAC has as its effective address the
address of a 3-word (2-word for DAC) block which is formatted as
follows:
<*CYCLE threshold>,,<Speed*1000+Packing*100+Nchans>
<address for `RUN' flag>
<*Input select>,,<*address for CYCLE pointer>
Speed is coded as follows:
Code Clock rate (per channel!!!)
0 6.4KHz
1 12.8KHz
2 25.6KHz
3 51.2KHz (Highest ADC rate)
4 102.4KHz
5 204.8KHz
Packing is coded as follows:
Code Packing mode
0 12-bit two's complement bytes packed 3 to a word
1 18-bit two's complement bytes packed 2 to a word
2 9-bit incremental floating-point bytes packed 4 to a word
(DAC only)
Note that the 18-bit byte has only 16 significant bits for the DAC
and only 14 significant bits for the ADC. In the DAC, the low order 2
bits of each byte are ignored. In the ADC, the low order 4 bits of
each byte are set to zero.
These packing modes are diagrammed below:
12-bit mode (code 0):
____________________________________________________________
|0 11|12 23|24 35|
| SAMPLE 1 | SAMPLE 2 | SAMPLE 3 |
|___________________|__________________|___________________|
18-bit mode (code 1):
____________________________________________________________
|0 17|18 35|
| SAMPLE 1 | SAMPLE 2 |
|___________________________|______________________________|
9-bit mode (code 2, DAC only):
____________________________________________________________
|0 3|4 8|9 12|13 17|18 21|22 26|27 30|31 35|
| EX1 | MANT1 | EX2 | MANT2 | EX3 | MANT3 | EX4 | MANT4 |
|_____|_______|_____|________|_____|_______|_____|_________|
This last mode is called Incremental floating point (abbreviated IFP
mode). Each 9-bit byte is decoded into a 4 bit exponent and a 5-bit
mantissa. The mantissa is shifted left the number of places
represented by the number in the exponent and is added into the
current position of the DAC to produce the new position. The sign bit
is inferred from the mantissa, it is not explicit. The sign bit is
taken to be the complement of the high order mantissa bit, and is
spread throughout the number before the shifting occurs.
To restate, the DAC has, for each channel, a 16 bit register, called
the FLTMEM register. These registers are cleared at the beginning of
a transfer. In IFP mode, a 9-bit byte is unpacked from the input
word. The high order 4 bits of that byte go into a counter, the low
order 5 bits go into the low-order 5 bits of a 21 bit (16+5) shift
register. The complement of the high order bit of the mantissa is
stored in the high-order 16 bits of that 21-bit shift register. This
entire register is shifted left the number of places (0 to 15)
represented by the number currently in the counter (the exponent).
The high order 16 bits of this register are then added into the
FLTMEM register for this channel and the sum is stored back into the
FLTMEM register. This sum is also delivered to the DAC.
Notice that this means that a 9-bit byte with all bits zero does not
represent a change of zero in the FLTMEM register. A zero byte will
infer a sign bit of 1, which will be spread throughout the word and
will result in a word of -1. 20 is the `official' code for zero. This
has the high order bit of the mantissa on and all other bits zero.
Nchans is decoded as follows:
Code Meaning
0 unused. Currently same as 3.
1 Monaural (1-channel only)
2 Stereo (2 channels)
3 Quadraphonic (4 channels)
For multiple channels, successive samples go to successive channels.
For example, in Stereo mode (code 2), the first sample goes to
channel 1, the second sample goes to channel 2, the third sample goes
to channel 1 again, the fourth to channel 2, and so on.
In CYCLE mode for the ADC, the input is directed into the first
buffer until the high order sample in a word exceeds the threshold.
This threshold is specified in the left half of the first word of the
MTAPE block.
The right half of the second word of the MTAPE block is the address
of the `RUN' flag (may be zero to inhibit feature). When the ADC or
the DAC is started, this cell is set to -1. When the ADC or DAC is
stopped, this cell is set to 0. In this manner, one can tell when his
transfer is actually occurring. Since the ADC and the DAC are given
separate MTAPEs, they can have separate RUN flags, as well as
separate clock rates, numbers of channels, and packing modes.
The third word of the MTAPE block is only relevant to the ADC. The
right half specifies the address where the buffer pointer is to
be places in CYCLE mode. What you get is the IOWD at the point
the threshold was exceeded, relocated to a relative address within
your core image. The address part of this word (the right half)
will point to the word containing the sample that exceeded the
threshold.
The left half of the third word of the MTAPE block specifies the
input multiplexing address for the ADC. Not only are there four input
channels that are serviced sequentially, but all four channels can be
switched to an alternate four inputs. This is specified by setting
the sign bit of the third word of the MTAPE block to 1. At some point
in the future, this left half may contain an honest multiplexing
address, such that input can be obtained from any of a number of
sources, but for now, you just have the four main channels and the
four alternate channels.
Neither the ADC nor the DAC take a standard monitor dump mode command
list. The effective address of the UUO points to a single IOWD. It
does not have to be followed by a zero.
26. The CORE2 UUO will take the direct (error) return if you ask it
to make a new upper segment for you and there are no job slots
available.
27. PTJOBX command number 7 is CLRBFI. It has the effect of having
done a CLRBFI for the TTY specified by the PTJOBX.
28. LOOKUP followed by ENTER updates date, time, PPN, and job name of
creator in file retrieval.
29. New UUO: TMPCRD [CALLI 400103] (formerly XPARMS) to read TMPCOR
files of another job. Calling sequence is
MOVE AC,[<code>,,ADR]
TMPCRD AC,
<error return>
ADR: <filename>,,<job number>
IOWD BLEN,BUF
<PPN for TMPCOR file>
BUF: BLOCK BLEN
Just like TMPCOR but only codes 0, 1, and 4 allowed. Illegal UUO
if non-allowed code; error return if no such job.
A job number of zero, or your own job number, refers to your own
TMPCOR files; in this case, all operations are allowed, and the
only difference from TMPCOR is that the PPN for the file comes
from the UUO. If ADR+2 is zero, the login PPN (not ALIAS) of the
specified job is used.
30. Remote users may not:
start spacewar modules; do EIOTM; or start an interrupt program in
IOT-user mode. Spacewar and EIOTM
get error messages, and interrupt programs are started ok but with
IOT-user off.
31. MTAPE to DSK where first word of arg block is neither 'GODMOD' nor
-1 returns the value of the uset pointer.
32. Error code number 1 to INTDMP is non-existant job number.
33. If the job name or number field in the INTIPI UUO is zero then
your own job is assumed.
34. More complete description of new-style clock interrupts:
Clock interrupts may be enabled by turning on the INTCLK bit
in the interrupt enablings. This starts the clock ticking regardless
of the state of the interrupt mask. If the clock interrupt should
try to occur when it is masked off, then the bit is set in JBTIRQ
anyway, i.e., the interrupt is pending and will occur as soon as it
is masked on. Disabling the clock interrupt deletes the clock
request and any pending clock interrupt. The time between clock
interrupts is one tick. The CLKINT UUO enables clock interrupts and
and sets the time between interrupts to the effective address of the
UUO. It no longer masks on the interrupt so that it is possible to
do a guaranteed indivisible operation involving clock interrupts.
Giving this UUO also flushes any pending clock interrupts that may
exist. If the effective address of the UUO is zero then clock
interrupts are disabled and any pending clock interrupt is flushed.
35. All new interrupt system UUOs that required a 1 in the ac field to
indicate processor 1, no longer have that restriction.
36. LINE EDITOR MOD. AFFECTING PTLOAD AND INWAIT
If the 40000 bit (bit 3) in a TTY's line characteristics word
is a 1 when a PTLOAD uuo is executed for that TTY, the line editor
passes to the program every character typed on the keyboard during
the re-edit. These characters, including the activation character
which terminates the re-edit, appear ahead of the re-edited line, and
should be read in 9-bit mode to see the control bits. The activation
character is followed by a character code of 400 (<meta>NULL), an
otherwise impossible code; the next character will be the first of
the re-edited line.
An INWAIT executed after the PTLOAD will function as usual,
returning the length of the re-edited line, unless enough characters
are typed during the re-edit to nearly fill the TTY input buffer. In
this case, the program will be activated and the INWAIT will return a
length of 0; the program should then read one or more of the
characters in the buffer (but not too many, or the re-edit will be
terminated) and loop back to the INWAIT.
The 40000 bit may be set and cleared by SETLIN, and is
cleared by RESET.
37. RENAME UUO can now rename a file from one PPN to another. This capability
is implemented in COPY (e.g., "RENAME FOO[A,B]←BAZ[C,D]" is legal).
38. PDP-11 INTERFACE (19-MAY-74 -- BO)
Physical device name: ELF
See IFACE.11[11,DOC] for details about the hardware.
You may INIT this device in dump mode (modes 16 and 17). The IN and OUT
UUO's take a single IOWD as their operand.
I/O status bits (SETSTS/GETSTS UUO's):
Bit(s) Name Meaning
18 IOIMPM Improper mode specified in INIT.
19 IODERR An error occurred during the last data transfer
(NXM11, BUSTO, PARITY, HUNG).
20 --- unused
21 NXM11 No response from the addressed UNIBUS location.
22 BUSTO Interface couldn't get the UNIBUS.
23 IOACT not used
24 BUSNIT You lost because a Unibus reset is going on.
25 PARITY Bad parity indication
26 HUNG Interface is hung irretrievably
27 --- unused
28 BGRAB Interface is holding onto the UNIBUS
(The PDP-11 is hanging).
29 NRETRY Don't retry on NXM11 or HUNG.
30:35 have the same meaning as in any other I/O device.
If NXM11 or HUNG is on, the system has tried 10 times before giving up
unless NRETRY is on. It always retries 10 times on BUSTO.
OTHER UUO'S
USETI CHN,ADR or USETO CHN,ADR
<only return> <only return>
ADR: MODE,,BUSADR
USETI and USETO set the data transfer mode and beginning UNIBUS
address for the following IN and OUT UUO's.
If bit 0 of the word at ADR is on, the mode is set from bits 13:17.
If bit 0 is off, the mode remains as it was before. The mode bits are
Bit(s) Name Meaning
13 NOPAR Ignore parity errors
14 GRAB Hold on to the UNIBUS during and after the transfer -
any error condition that sets IODERR will release the bus.
15 SGNEXT Extend the sign of input data.
16:17 Data packing mode, decoded as:
00 ONEWD one PDP-11 word per word, right adjusted
01 TWOWD two words per word, right-adjusted in each halfword
10 TWOWDR two per word, in right 32 bits
11 TWOWDL two per word, in left 32 bits.
In the two-word modes, the higher-order PDP-11 word is the one at the
first UNIBUS address. Sign extension has no effect in TWOWDL; it
operates on each halfword separately in TWOWD.
If bit 17 of the contents of ADR is on, the corresponding bus address
is set from bits 18:35. If off, the address remains where the last
IN or OUT left it, pointing to the UNIBUS address immediately
following the last word transferred. Mote that these are word, not
byte, addresses.
UGETF CHN,ADR
<only return>
ADR: <USETI word>
<USETO word>
UGETF reads the states of the two USET pointers and modes into a
two-word block starting at ADR. The results are stored with bits 0
and 18 on so that a subsequent USET addressed to one of these words
will set both the mode and the bus address.
RELEAS CHN,
<only return>
RELEAS resets the interface and clears its interrupt enablings, and
sets the USET pointers to 400000,,400000.
MTAPE CHN,ADR
<error return>
<normal return>
ADR: <instruction>
<data>
MTAPE does various things depending on the contents of ADR. ADR+1
either contains data that will be written to the 11 or receives data
read from the 11. In case of an error, DEVIOS contains the reason.
The general form of the <instruction> is
Bits Meaning
0:8 Operation code
9:12 unused
13:17 mode, interpreted as in a USETI or USETO
18 unused
19:35 UNIBUS address.
The mode and address of an MTAPE have no effect on the USET pointers
or the operation of subsequent IN's and OUT's, except that the BGRAB
state of the interface (and the BGRAB bit of DEVIOS) reflect the
state left by the last operation performed.
Op code = 1: FILL
<data> = <number>,,<const>
Writes <const> into <number> words beginning at the specified address.
Ignores mode bits 16:17.
Op code = 2: PEEK
Reads one or two PDP-11 words (depending on the mode) into ADR+1.
OP code = 3: POKE
Writes <data> into one or two PDP-11 words.
Op code = 4: BUSREL
Clears the interface, making it release the UNIBUS if it is in BGRAB
mode. BUSREL also clears the BGRAB bit in DEVIOS. The mode and
Bus Address bits are ignored.
Other MTAPE's for poking buttons on the console will be added when
the hardware is built.
39. File protection for disk files: the "same programmer, other
project" category is no longer used. Instead, the three categories
of protection are file owner (700 bits), other local users (070
bits), and other remote users (007 bits). The meaning of individual
bits is unchanged within each category for files other than UFDs.
The bits in the protection code for a UFD now affect protection for
files in that UFD, i.e., 4 bit prevents protection change for all
files in the UFD, 2 bit prevents LOOKUPs in the UFD and also prevents
reading the UFD as a file, and the 1 bit prevents ENTERs and RENAMEs
(except protection change) in the UFD. As in the file protection
code, the 400 and 200 bits are ignored by the monitor. ENTER or
RENAME of a UFD is illegal except that privileged programs (i.e.,
LOGIN and LOGOUT) can create new UFDs or delete old ones. Only the
owner of a UFD can change its protection (except for privileged
programs). Anyone may read the MFD but no one may modify it. Also,
there is a "default file protection code" associated with each UFD.
An ENTER of a new file with a user-specified protection of zero uses
this default value. An ENTER which is replacing an existing file
retains the old protection code if the user-specified code is zero.
The default file protection code for a UFD can only be set by LOGIN.
The values used for new UFDs are 005 for the UFD protection and 000
for the default file protection. Thus remote users may not write
files in most UFDs.
40. The IMPBIT in the line characteristics word for a terminal (1000,,0)
can be set but not cleared by the user (by SETLIN or PTSETL). That is,
once you set it, you're stuck with it.
41. Anything which unpurifies an upper segment (e.g., UNPURE UUO) also
changes its jobname by shifting it right one character (six bits), so
that the pure, sharable version will still have a unique name.
[42 is obsolete now!!!!!]
42. Bit 29 (100) must be on in any INIT, OPEN or SETSTS to the UDP to
denote old-format UDP service. (A new format is being planned.)
[No longer true!!!]
43. Error reponse from the XGP/Font Compiler has been expanded.
Case of MTAPE function 0, ADR+1 contains 4, ADR+2 contains 3, and
if ADR+2 contains either 3, 4 or 7 then ADR+3 will contain the octal
value of the last character assembled (or possibly the current character
being assembled).
44. P121 FBWRT UUO. Should say MOVEI AC,<band number> rather than
MOVEI AC,<logical fast band number>
45. P122 next to last line. Should read .... If you
rather than ... If you have
46. The DEVCHR UUO for a UDP now returns bits 18 and 19 as the OR of the
ASSCON and ASSPRG bits of all DDBs for that UDP. Bit 12 (available to
this job) is also set properly, i.e., the bit is on if the UDP is unused,
public, or private and owned by this job. Note that in a DEVCHR for DSK
or IMP, bits 18 and 19 will always be zero, since they are copied out of
the model DDB. If the UDP is in new mode (see 48 below), the DVDSK bit
(bit 1) will be on as well as the DVUDP bit (bit 2).
47. The DEVUSE UUO for a UDP returns, in bits 12:17, the job number of
the UDP's owner, if any. A zero in this field but bit 0 on MAY NOT
mean detached from system for a UDP, but rather assigned as public.
To be sure, check bit 7, which will be on for detached UDPs. The
following extra bits are set for UDPs:
3 40000,,0 ASSIGNed by this job
4 20000,,0 INITed by this job
5 10000,,0 ASIGNed by some other job
6 4000,,0 INITed by some other job
7 2000,,0 ASSIGNed as PRIVATE pack (by someone)
If bits 12:17 are zero, and bits 6 and 7 are one, the UDP is being used
as the swapping device. Again, note that the information returned for
DSK or IMP is wrong.
48. UDPs may now be used in "old" or "new" mode. Old mode is like
before; new mode is just like DSK, with the following exceptions:
a. MTAPEs which refer to absolute disk addresses are taken relative
to the first track (the SAT track) of the particular UDP used, and
are limited to the extent of that one UDP. (DSK MTAPEs still allow
all tracks to be used, including UDP tracks.)
b. The SATID for a UDP is a SIXBIT name which is intended to agree
with the name written on the pack label. This is not to be confused
with the UDP password.
c. The last track of the UDP is still used for a password, as in
old mode; however, the password need not be given for new-mode
operations, which are protected by the same scheme as on DSK. The
UDP password is also stored as the [1,1] password.
It is illegal to INIT a UDP unless you have ASSIGNed it
first. The ASSIGN command for UDP, unlike other devices, does not
necessarily prevent access by other users. There are three ways
of ASSIGNing a UDP:
PUBLIC -- new mode, other jobs may use the UDP.
PRIVATE -- new mode, other jobs may not use the UDP.
OLD -- old mode, other jobs may not use the UDP.
(The syntax of the ASSIGN command is ASSIGN [mode] dev [logname] ;
items in brackets are optional, default mode is PUBLIC.) The
mode may be changed between PUBLIC and PRIVATE by new ASSIGN
commands except that you must be the only user of the UDP to make
it PRIVATE. However, to change between old and new modes, you
must first deassign the UDP (there must be no DDBs for it).
The mode specified in the ASSIGN command controls the use of the
UDP; hence, the 100 bit in the INIT is no longer used.
A pack to be used in new mode must first be formatted.
(I.e., must have SAT and MFD.) Once a pack has been formatted,
attempts to write on it in old mode will fail unless you have
UDPPRV. Old mode reading is ok. (So much for read protecting
UDP files.) Attempts to read or write in new mode on an
unformatted UDP will, of course, fail.
The scratch/swapping pack has password *SWAP*. This
password is treated specially by the monitor in two ways: a zero
password is accepted in an old-mode ENTER, and it is impossible
to change the password (old-mode RENAME will fail).
49. Two new MTAPEs for DSK and file-structured UDP:
MTAPE CHN,[ 'GODMOD'
22
ADDR]
will store the number of free tracks on the UDP (or in the file
system for DSK) as typed by the RESO command. This is the number
of tracks before the monitor will not allow an ENTER, which is
=200 tracks before the structure is really full. Also,
MTAPE CHN,[ 'GODMOD'
23
ADDR]
stores the SATID of the structure. Both store into user address ADDR.
50. Device VOD REG 8/16/74
The voice synthesizer (VODER) has device name VOD. Mode 10 (octal)
is the only legal mode. The buffer size is 20 (decimal) data words.
The data in the user's buffer is sent directly to the voder.
The Voder interface interprets each word as four 9-bit bytes. The
400 bit of each byte is the valid bit. The other eight bits represent
a phoneme. Care should be taken to avoid the phoneme with value zero,
because this will cause the voder to stop, and the rest of the buffer-full
will not be transmitted until later, and data may become lost.
For a description of the correspondence between phonemes and byte-values,
see section 21 of the facility manual, FACIL.TED[H,DOC]
DEVCHR of VOD is DVOUT and a bit for mode 10. There is no special DEVCHR
bit for the voder. Only the UUOs OPEN (and INIT), OUT (and OUTPUT),
CLOSE and RELEAS are valid for the voder. LOOKUP, ENTER, RENAME, and MTAPE
are no-ops.
51. Interrupts will NOT terminate a SLEEP UUO prematurely. The
SLEEP will run to completion unless a UWAIT is done at
interrupt level when the SLEEP is in progress. The comment
in the manual under the SLEEP UUO that says an interrupt
will terminate the SLEEP immediately is WRONG.
52. The definitions on pp. 104-105 of the manual of the bits
INTPTO and INTPTI are reversed. The descriptions of what
the bits mean are correct, but the bit values are interchanged.
INTPTO is really bit 8 (1000,,0) and INTPTI is bit 5 (10000,,0).
53. When a new job is started up with the SWAP UUO, the privilege bits
of the old job are copied to the new job if the new job is getting
the login PPN of the old job. Otherwise, the new job's privileges
are cleared.
54. Correction to manual. Mode 16 for MTAs is exactly the same as mode 17.
55. In Appendix 1 of the UUO Manual (III Display Processor), under
the CHR Instruction on p. 191, change the character octal 177 generates
to a Circumflex (instead of a backslash).
56. The PPSEL UUO normally does a PPACT with only the newly selected PP
activated. This can now be inhibited by turning on the 400000 bit in
the PP number. Thus PPSEL 1 will do a PPACT 200000 but PPSEL 400001
will not. Also, contrary to what the manual says, PPACT on a Data
Disc does erase any PPs turned off (de-activated).
57. Clarification: The suppress Control-CR (set via SETACT) is effective
even if the terminal is not in special activation mode. Same goes for
other special low-order bits in the last word of activation table.
58. Date75 11/11/74 updated 11/22/74
January 4, 1975 is the last date representable in the old PDP-6 format
date field. The following changes have been implemented to extend the
dates for an additional 77 years.
1. DATE UUO [CALLI 14]
returns a 15 bit date, instead of 12 bits as previously documented.
2. Disk file dates
LOOKUP and RENAME have been changed to use bits 18-20 of
the second (extension) word of the argument block as the high bits
of the date last written. The low bits of the date last written
are bits 24-35 of the third word.
3. Dectapes (PDP-6 format)
LOOKUP returns the date in bits 24-35 of the third word
and bits 18-20 of the second word.
RENAME accepts a date in the same format.
ENTER ignores the date entirely; files always get their
date set to the current date by ENTER.
Note that the 15-bit date will actually be stored in bits
21-35 of the third word of the directory entry, and the split
field in LOOKUP and RENAME arguments is only for compatability
with the disk UUOs. Note that people who try to interpret the
data returned by LOOKUP should avoid being confused by the high
order date field which is returned in (bits 18-20 of) the halfword
which formerly contained only the first block number of the file (now
confined to bits 21-35).
ENTER, by the way, returns the block number of the first block of
the file in bits 21-35 of the second word.
4. Dectapes (PDP-10 format)
The extra date bits are smeared in the extra bit of the slot words.
The format is too horrible to explain here, see REG if you really
want to know. This affects only user programs since pdp-10 dectapes
are not supported by the system. The programs 6TO10, 10TO6, and
DMAN are NOT supported and will be not be converted. TENDMP will
be supported for PDP-10 dectape manipulation.
5. DSKTIM UUO
[Added 11/21/74] This UUO does NOT and will not return the correct
date after Jan 5, 1975. The date field returned by this UUO is
constrained to 12 bits. For a single UUO to get the date and time
(in seconds) use ACCTIM. The DSKTIM UUO will shortly be made illegal.
Conversion of programs to DATE75.
The following rules should be followed:
ENTER
The only date field that's relevant is the creation date in bits
21-35 of the extension word (disk only). If you wish to set the
creation date use this field, otherwise zero it.
LOOKUP
works as before; if you want to print the file's date last written
you must get that date from two words returned by LOOKUP.
RENAME
To get the default date and time, zero bits 9-35 in the third word, and
bits 18-20 in the second word. Otherwise, set these fields explicitly.
59. XGP default margin settings
LMAR 200
RMAR 1650 may vary with number of raster points/scan-line
TMAR 200
PMAR 1790 varies with the number of scan-lines/inch
BMAR 200
XLINE 4
The numbers above are all in decimal. Parameter names correspond to
XSPOOL switches. Some parameters are subject to change as the
physical charateristics of the XGP change. Parameters are changed
manually, so if you observe the XGP making short pages, etc., tell
REG or anyone else who knows how to change these settings
Nominally, the XGP has 200 raster points/inch horizontally, and 200
scan-lines/inch vertically.
The horizontal sweep is known to be non-linear, so if you're trying
to do exact graphics you'll probably lose.
60. A clarification about dectapes (PDP-6 format). REG 11/19/74
When an ENTER is done, if the fourth word is negative, it is assumed
to contain the IOWD for writing a DMP file. Note that DMP files
are written differently than other files on a dectape.
Normal files are written 127 words/block with a 1 word header that points
to the next block of the file (always the next block on the tape, or zero).
DMP files are written 128 words/block and always in consecutive blocks
and the IOWD for retreiving the file is in the directory.
60. In 8-bit IMP input, unused bytes in the last data word are flagged
by bits turned on in the four normally unused bits (32-35) with the
same significance as for IMP output (item 21, page 2). The value of
such unused bytes will always be zero, as before, so only programs for
which zero bytes are significant need worry about this.
61. Two new XGP escape sequences:
177 1 50 accepts the next byte as the intercharacter spacing.
Note this command is currently a no-op and is included for
compatibility with MIT.
177 1 51 is like stop underline (177 1 47) except the first
byte following the 51 allows the user to specify how thick
the underline will be.
62. Documentation error in description of bit 4 of function code
for data disk command word. In text mode, Bit 4 ON means double
width, OFF means single width. (The picture on page 199 is right)